Eecient Symbolic Analysis for Optimizing Compilers ?

نویسنده

  • Robert A. van Engelen
چکیده

Because most of the execution time of a program is typically spend in loops, loop optimization is the main target of optimizing and restructuring compilers. An accurate determination of induction variables and dependencies in loops is of paramount importance to many loop optimization and parallelization techniques, such as generalized loop strength reduction, loop parallelization by induction variable substitution, and loop-invariant expression elimination. In this paper we present a new method for induction variable recognition. Existing methods are either ad-hoc and not powerful enough to recognize some types of induction variables, or existing methods are powerful but not safe. The most powerful method known is the symbolic diierencing method as demonstrated by the Parafrase-2 compiler on parallelizing the Perfect Benchmarks (R). However, symbolic diierencing is inherently unsafe and a compiler that uses this method may produce incorrectly transformed programs without issuing a warning. In contrast, our method is safe, simpler to implement in a compiler, better adaptable for controlling loop transformations, and recognizes a larger class of induction variables.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Formal Veri cation of Transformations on Dependency Graphs in Optimizing Compilers

Dependency graphs are used as intermediate representations in optimizing compilers and software-engineering. In a transformational design approach, optimization and reenement transformations are used to transform dependency-graph-based speciications at higher abstraction levels to those at lower abstraction levels. An informal representation would lead to subtle errors, making it diicult to gua...

متن کامل

Fractal Symbolic Analysis for Program Transformations

Restructuring compilers use dependence analysis to prove that the meaning of a program is not changed by a transformation. A well-known limitation of dependence analysis is that it examines only the memory locations read and written by a statement, and does not assume any particular interpretation for the operations in that statement. Exploiting the semantics of these operations enables a wider...

متن کامل

Efficient Symbolic Analysis for Optimizing Compilers

Because most of the execution time of a program is typically spend in loops, loop optimization is the main target of optimizing and restructuring compilers. An accurate determination of induction variables and dependencies in loops is of paramount importance to many loop optimization and parallelization techniques, such as generalized loop strength reduction, loop parallelization by induction v...

متن کامل

Counting Solutions to Linear and Nonlinear Constraints through Ehrhart Polynomials: Applications to Analyze and Transform Scientiic Programs

In order to produce eecient parallel programs, optimizing compilers need to include an analysis of the initial sequential code. When analyzing loops with aane loop bounds, many computations are relevant to the same general problem: counting the number of integer solutions of selected free variables in a set of linear and/or nonlinear parameterized constraints. For example, computing the number ...

متن کامل

Symbolic expression evaluation to support parallelizing compilers

Symbolic analysis is of paramount importance to further advance the state-of-the-art of parallelizing compilers. The quality of various compiler analyses and optimizing code transformations depend on the ability to evaluate symbolic expressions for equality and inequality (=; <;>) relationships. This paper describes a powerful algorithm that computes lower and/or upper bounds of wide classes of...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007